Oblivion Script Optimization / Оптимизация скриптов Автор: Hrmn Локализация: GEPARD (e-mail) Версия: 1.0 SI Требования: Oblivion + Shivering Isles (Перевод сделан под Золотое издание от 1С) (важно!) Описание: Целью данного плагина является улучшение производительности Oblivion путем оптимизации внутриигровых скриптов. Каждое мгновение в игре выполняются сотни скриптов, их выполнение занимает много ресурсов процессора. По мнению автора, Bethesda поленилась оптимизировать скрипты. Автор плагина переписал все gamemode-скрипты, благодаря чему процессор выполняет чуть меньше вычислений, хотя результат действия скриптов не изменится. Как сильно этот плагин улучашает производительность? У большинства людей самая слабая часть компьютера - видеокарта. И именно из-за её слабости FPS понижается. Соответственно, если низкий FPS вызван видеокартой, то этот плагин не увеличит ваш FPS, а лишь уменьшит «подвисания» игры и, возможно, время загрузки локаций. У автора плагина, разница между FPS до и после использования плагина составила 0.3-0.4 FPS, у локализатора - 1-1.5 FPS. Да, это немного, но, все же, и это неплохо, особенно для тех, у кого совсем низкий FPS! Тем более, плагин абсолютно не влияет на игровую механику. С другой стороны, у тех, чей низкий FPS вызван слабым процессором, повышение FPS может быть более значительным. Предупреждение Во-первых, этот плагин должен всегда стоять ПЕРВЫМ в порядке загрузки, АБСОЛЮТНО первым, до неофициальных патчей и т.п. (не считая esm, которые всегда грузятся до esp). Каждый оптимизированный скрипт дает очень небольшой прирост производительности, а другие изменения скриптов, вроде баг-фиксов и добавления новых возможностей/функций для стандартных скриптов, могут быть куда более важными, чем небольшая оптимизация. Объяснение работы Некоторые могут не понимать, как изменение скриптов может повлиять на производительность. Ниже приведены несколько примеров, для их понимания нужно иметь базовые сведения о структуре скриптов в Oblivion: До оптимизации: if timer <= 0 && getstage MQ15 == 58 && OrtheRef.getdead == 0 set timer to 5 sayTo player MQ15EldamilWarning endif if timer <= 0 && getstage MQ15 == 66 && getdistance player < 1000 if suicide == 0 set timer to sayTo player MQ15EldamilWarning set suicide to 1 endif endif if suicide == 1 && getstage MQ15 == 66 && timer <= 0 setstage MQ15 67 endif В этом случае скрипту нужно сделать 9 проверок: timer <= 0 getstage MQ15 == 58 OrtheRef.getdead == 0 timer <= 0 getstage MQ15 == 66 getdistance player < 1000 suicide == 1 getstage MQ15 == 66 timer <= 0 Скрипт после оптимизации: if timer <= 0 if getstage MQ15 == 58 if OrtheRef.getdead == 0 set timer to 5 sayTo player MQ15EldamilWarning endif elseif getstage MQ15 == 66 if getdistance player < 1000 if suicide == 0 set timer to sayTo player MQ15EldamilWarning set suicide to 1 elseif suicide == 1 setstage MQ15 67 endif endif endif endif После оптимизации скрипту нужно делать намного меньше проверок, рассмотрим все возможные варианты условий ниже: Вариант 1: timer > 0 - 1 запрос, на 8 меньше Вариант 2: timer <= 0, getstage mq15 == 58, ortheref.getdead == 1 - 3 запроса, на 6 меньше Вариант 3: timer <= 0, getstage mq15, == 58, ortheref.getdead == 0 - 3 запроса, на 6 меньше Вариант 4: timer <= 0, getstage mq15, != 58 getstage mq15 == 66, getdistance player >= 1000 - 4 запроса, на 5 меньше Вариант 5: timer <= 0, getstage mq15, != 58 getstage mq15 == 66, getdistance player < 1000, suicide == 0 - 5 запросов, на 5 меньше (в оригинале при таких условиях требуется 10 проверок) Вариант 6: timer <= 0, getstage mq15 != 58, getstage mq15 == 66, getdistance player < 1000, suicide == 1 - 5 запросов, на 5 меньше (в оригинале при таких условиях требуется 10 проверок) Вариант 7: timer <= 0, getstage mq15 != 58, getstage mq15 != 66 - 3 запроса, на 6 меньше Теперь вы можете видеть, что при любой ситуации в этом скрипте процессору понадобится делать чуть меньше вычислений для его выполнения. Притом, функция скрипта не изменилась - он делает то же, что и делал до оптимизации. Установка: 1. Разархивируйте содержимое папки архива Data в папку Oblivion\Data. 2. После этого запустите OblivionLauncher, выберете раздел "Файлы данных" и поставьте галочку напротив названия плагина, используя двойной клик. Нажмите "ОК" и запустите Обливион. 3. Рекомендуем пользоваться Better Oblivion Sorting Software для того, чтобы задать нужный порядок загрузки плагинов. Удаление: Запустите игру, зайдите в раздел "Файлы данных" и уберите галочку напротив названия плагина, используя двойной клик. Плагин скачан с сайта The Elder Scrolls Modding (http://mtes.ru). Заходите еще! |
||
|
|
||